#ifndef WIDGET_FUNCD_WEATHER_H
#define WIDGET_FUNCD_WEATHER_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QMap>
#include <QGraphicsSimpleTextItem>
#include <QtCharts>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget_funcD_Weather; }
QT_END_NAMESPACE

class Widget_funcD_Weather : public QWidget
{
    Q_OBJECT

public:
    explicit Widget_funcD_Weather(QWidget *parent = nullptr);
    ~Widget_funcD_Weather();

private slots:
    void on_searchButton_clicked(); // 查询按钮点击槽函数
    //void onWeatherDataReady();      // 天气数据接收完成
    //void onCityCodeLoaded();        // 城市代码加载完成
    void onWeatherDataReady(QNetworkReply *reply);

private:
    Ui::Widget_funcD_Weather *ui;
    QNetworkAccessManager *networkManager; // 网络请求管理器
    QMap<QString, QString> cityCodeMap;    // 城市名称到代码的映射
    QStringList cityNameList;            // 城市名列表（用于 QCompleter）
    QCompleter *cityCompleter;           // 新增：搜索补全器
    // 用于存储极值标记和标签
    QList<QtCharts::QScatterSeries*> extremeMarkers;
    QList<QGraphicsSimpleTextItem*> extremeLabels;
    void loadCityCodes();                  // 加载城市代码文件
    QString getCityCode(const QString &cityName); // 获取城市代码
    void parseWeatherData(const QByteArray &data); // 解析天气数据
    void updateWeatherDisplay();           // 更新天气显示
    void setupChart();                     // 设置折线图
    void initCompleter();                  //模拟搜索
    // 添加清理函数
    void clearExtremeMarkers();
};

#endif // WIDGET_FUNCD_WEATHER_H
